package _go

import "sort"

//基本思路 先排序加双指针
func intersection(nums1 []int, nums2 []int) []int {

	sort.Ints(nums1)
	sort.Ints(nums2)

	l1 := len(nums1)
	l2 := len(nums2)

	var res []int
	i := 0
	j := 0

	//数组道尽头 或者数组儿到尽头 停止
	for i < l1 && j < l2 {
		//两个数相等 且新的值大于旧值 直接添加到结果里 并且指针向后以后
		if nums1[i] == nums2[j] {

			//只有nil和 数据大于数据最后的值的时候才加入数组
			if res == nil || nums1[i] > res[len(res)-1] {
				res = append(res, nums1[i])
			}
			//如果值相等 需要往后移动 元素加不加入不关心
			i++
			j++

		} else if nums1[i] > nums2[j] {
			//前边数组大 后边的数据向后移动
			j++
		} else {
			//反之 前边的数组前后移动
			i++
		}
	}
	return res
}
